﻿using System;
using System.ComponentModel.DataAnnotations;

namespace GXJD.Wx.DBModel
{
    /// <summary>
    /// 公共Entity，所有的都继承自该Entity
    /// </summary>
    public class Entity
    {
        /// <summary>
        /// ID
        /// </summary>
        [Key]
        [MaxLength(40)]
        public string id { get; set; }

        /// <summary>
        /// 是否有效
        /// </summary>
        public int? isvalid { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime? createdate { get; set; }

        public Entity()
        {
            this.id = Common.NewID();
            this.createdate = DateTime.Now;
            this.isvalid = 1;
        }
    }

    public static class Common
    {
        #region 生成自定义的GUID值
        /// <summary>
        /// 生成自定义的GUID值
        /// </summary>
        /// <returns></returns>
        public static Guid NewMyGuid()
        {
            string s = DateTime.Now.Ticks.ToString("x") + Guid.NewGuid().ToString("N");
            return new Guid(s.Substring(0, 32));
        }
        #endregion

        #region 生成GUID类型的数据ID值（字符串类型）
        /// <summary>
        /// 生成GUID类型的数据ID值（字符串类型）
        /// </summary>
        /// <returns></returns>
        public static string NewID()
        {
            /*
            1、Guid.NewGuid().ToString("N") 结果为：
                  38bddf48f43c48588e0d78761eaa1ce6

            2、Guid.NewGuid().ToString("D") 结果为： 
                  57d99d89-caab-482a-a0e9-a0a803eed3ba

            3、Guid.NewGuid().ToString("B") 结果为：
                 {09f140d5-af72-44ba-a763-c861304b46f8}

            4、Guid.NewGuid().ToString("P") 结果为：
                 (778406c2-efff-4262-ab03-70a77d09c2b5)

            可见默认的为第2种效果
             */

            return NewMyGuid().ToString("N");
        }
        #endregion

        #region 生成GUID类型的数据ID值（GUID类型）
        /// <summary>
        /// 生成GUID类型的数据ID值（GUID类型）
        /// </summary>
        /// <returns></returns>
        public static Guid NewGuid()
        {
            return NewMyGuid();
        }
        #endregion
    }
}
